/////////////////////////////////////////////////////////////////////////////////////////
// Luminary Micro / Circuit Cellar 2007 Design Contest
// Entry LM1732
//
// SD Card Low level Functions
// Taken from ChaN (http://elm-chan.org/index_j.html) and simplified 
/////////////////////////////////////////////////////////////////////////////////////////

#ifndef _SDIF


/////////////////////////////////////////////////////////////////////////////////////////
// INCLUDES
/////////////////////////////////////////////////////////////////////////////////////////
#include "globals.h"


/////////////////////////////////////////////////////////////////////////////////////////
// CONSTANTS
/////////////////////////////////////////////////////////////////////////////////////////

// Results of Disk Functions (DRESULT)
#define RES_OK			0									// Successful
#define	RES_ERROR		1									// R/W Error
#define	RES_WRPRT		2									// Write Protected
#define	RES_NOTRDY		3									// Not Ready
#define	RES_PARERR		4									// Invalid Parameter

// Disk Status Bits (DSTATUS)
#define STA_NOINIT		0x01								// Drive not initialized
#define STA_NODISK		0x02								// No medium in the drive
#define STA_PROTECT		0x04								// Write protected

// Command code for disk_ioctrl()
#define GET_SECTORS		1
#define MMC_GET_CSD		10
#define MMC_GET_CID		11
#define MMC_GET_OCR		12


/////////////////////////////////////////////////////////////////////////////////////////
// TYPES
/////////////////////////////////////////////////////////////////////////////////////////
typedef unsigned char	DSTATUS;
typedef unsigned char	DRESULT;


/////////////////////////////////////////////////////////////////////////////////////////
// PROTOTYPES
/////////////////////////////////////////////////////////////////////////////////////////
DSTATUS disk_initialize (void);
DSTATUS disk_shutdown (void);
DSTATUS disk_status (void);
DRESULT disk_read (BYTE*, DWORD, BYTE);
DRESULT disk_write (const BYTE*, DWORD, BYTE);
void disk_timerproc (void);

#define _SDIF
#endif
